Unit  Mvenda;
Interface Uses Crt,Tipos,Unipro,Uvenda;
          Procedure Principal(Var Op:Char);
          Procedure ModuloVendas(Var Vendas:TlistaVenda;Var Venda:Tvenda; Var Clientes:TlistaCli;
          Var Vendedores:TlistaVend;Var Produtos:TlistaPro);
          Procedure CadastroItens(var Produtos:TlistaPro;Var Vendas:TlistaVenda;Var Venda:Tvenda;Item:Titem);
          Procedure CadVend(Var Vendedores:TlistaVend;Var Venda:Tvenda);
          Procedure CadCli(Var Clientes:TlistaCli;Var Venda:Tvenda);


Implementation



Procedure  Principal(Var Op:Char);
Begin
{O menu principal}
ClrScr;
Writeln('Modulo de Vendas');
Writeln('1- Efetuar Nova Venda');
Writeln('2- Deletar Lista de Vendas');
Writeln('3- Sair');
Op:=Readkey;
End;


Procedure  ModuloVendas(Var Vendas:TlistaVenda;Var Venda:Tvenda; Var Clientes:TlistaCli;
Var Vendedores:TlistaVend;Var Produtos:TlistaPro);
{Procedure chamada para iniciar o modulo de vendas}
Var
  Item:Titem;
  Op:Char;
Begin
Repeat
  Repeat{Menu principal do modulo de vendas}
    Principal(Op);
  Until (Op='1') Or (Op='2') Or (Op='3');


  Begin
  Case Op Of
  '1':Begin{Cadastro de vendas}
        If Vendas.Qtd<MaxVendas Then
        Begin
          If Produtos.Qtd>0 Then
          Begin{Devem haver produtos cadastrados}
            If Vendedores.Qtd>0 Then
            Begin{Devem haver vendedores cadastrados}
              If Clientes.Qtd>0 Then
              Begin{Devem haver clientes cadastrados}
                CadastroItens(Produtos,Vendas,Venda,Item);
                CadVend(Vendedores,Venda);
                CadCli(Clientes,Venda);
                CadVenda(Vendas,Venda);
              End
              Else
              Begin
                Writeln('Sem clientes cadastrados!');
                Readkey;
              End;
            End
            Else
            Begin
              Writeln('Sem vendedores cadastrados!');
              Readkey;
            End;
          End
          Else
          Begin
            Writeln('Sem produtos cadastrados!');
            Readkey;
          End;
        End
        Else
        Begin
          Writeln('Sem espaco para vendas!');
          Readkey;
        End;{Fim da parte de cadastro}
      End;

  '2':Begin
        DestroiVendas(Vendas);
        Writeln('Lista de vendas deletada com sucesso!');
        Readkey;
      End;
  End;
 End;
Until Op='3';
End;


Procedure CadastroItens(Var Produtos:TlistaPro;Var Vendas:TlistaVenda;Var Venda:Tvenda;Item:Titem);
Var
  Result,Result2:Integer;
  Produto:Tproduto;
  Op:Char;
  Chave:Boolean;
Begin


Repeat
  Chave:=False;
  Op:='x';{Anulando op}
  ClrScr;
  Writeln('Digite o codigo do produto:');
  Readln(Item.CodPro);
  Produto.CodPro:=Item.CodPro;
  Result:=PesqPro(Produtos,Produto);
    Case Result Of
    1:Begin
        Repeat
          Repeat
            ClrScr;
            Writeln('Digite a quantidade vendida:');
            Readln(Item.QtdItem);
              If Item.QtdItem=0 Then
              Begin
                Writeln('Valor invalido!');
                Readkey;
              End;
           Until Item.QtdItem>0;


          Result2:=CadItem(Produtos,Vendas,Venda,Item);
            Case Result2 Of
            1:Begin
                Writeln('Item cadastrado com sucesso!');
                Chave:=True;
                Readkey;
              End;
            5:Begin
                Writeln('Tentativa de retirada maior que o estoque!');
                Readkey;
              End;
            6:Begin
                Writeln('Sem estoque!');
                Readkey;
              End;
            End;
        Until (Result2=1) Or (Result2=6);
      End;
    3:Begin
        Writeln('Produto inexistente!');
        Readkey;
      End;
    4:Begin
        Writeln('Codigo invalido!');
      End;
    End;
  If Chave Then
  Begin
    Writeln('Cadastrar mais itens? (S/N)');
    Op:=Readkey;
  End;
Until Upcase(Op)='N';
End;


Procedure CadVend(Var Vendedores:TlistaVend;Var Venda:Tvenda);
Var
  Result,Result2:Integer;
  Vendedor:Tvendedor;
Begin
  Repeat
    ClrScr;
    Writeln('Digite o codigo de vendedor:');
    Readln(Vendedor.CodVend);
    Result:=PesqVend(Vendedores,Vendedor);
      Case Result Of
      1:Begin
          Result2:=CadVendedorVenda(Vendedores,Vendedor,Venda);
          Writeln('Vendedor cadastrado na venda com sucesso!');
          Readkey;
        End;
      3:Begin
          Writeln('Vendedor inexistente!');
          Readkey;
        End;
      4:Begin
          Writeln('Codigo invalido!');
          Readkey;
        End;
      End;
  Until Result=1;
End;

Procedure  CadCli(Var Clientes:TlistaCli;Var Venda:Tvenda);
Var
  Result,Result2:Integer;
  Cliente:Tcliente;
Begin
  Repeat
    ClrScr;
    Writeln('Digite o codigo de cliente:');
    Readln(Cliente.CodCLi);
    Result:=PesqCli(Clientes,Cliente);
      Case Result Of
      1:Begin
          Result2:=CadClienteVenda(Clientes,Cliente,Venda);
          Writeln('Cliente cadastrado na venda com sucesso!');
          Readkey;
        End;
      3:Begin
          Writeln('Cliente inexistente!');
          Readkey;
        End;
      4:Begin
          Writeln('Codigo invalido!');
          Readkey;
        End;
      End;
  Until Result=1;
End;



End.{Fim da Unit}


